package com.zenithmind.common.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;

/**
 * MyBatis Plus配置
 */
@EnableTransactionManagement
@Configuration
public class MybatisPlusConfig {

    /**
     * 配置Mybatis-Plus分页插件
     *
     * 该方法通过创建和配置MybatisPlusInterceptor实例来实现分页功能
     * 主要目的是为了在Mybatis-Plus中集成分页功能，以便在查询时能够进行分页处理
     *
     * @return MybatisPlusInterceptor 配置好的Mybatis-Plus拦截器实例
     */
    @Bean
    public MybatisPlusInterceptor commonMybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 添加分页内部拦截器，参数为数据库类型，这里配置为MySQL
        // 注意：如果配置多个插件, 切记分页最后添加
        // 这是因为插件的执行顺序可能会影响到分页结果的准确性
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        // 如果有多数据源可以不配具体类型, 否则都建议配上具体的 DbType
        // 这里配置具体的数据库类型，可以使得分页插件更加针对性地优化分页查询性能
        return interceptor;
    }
}